package us.proyecto.canarios.actions.concursos;

import static org.jboss.seam.ScopeType.SESSION;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelectionIndex;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.log.Log;

import us.proyecto.canarios.dao.ConcursoDAO;
import us.proyecto.canarios.dao.DiccionarioDAO;
import us.proyecto.canarios.dao.PajarosDAO;
import us.proyecto.canarios.dao.ProvinciaDAO;
import us.proyecto.canarios.dao.UsuarioDAO;
import us.proyecto.canarios.domain.Asociacion;
import us.proyecto.canarios.domain.Concurso;
import us.proyecto.canarios.domain.Criador;
import us.proyecto.canarios.domain.Municipio;
import us.proyecto.canarios.domain.Pajaro;
import us.proyecto.canarios.domain.Provincia;
import us.proyecto.canarios.domain.Puntuacion;
import us.proyecto.canarios.domain.Tipo;
import us.proyecto.canarios.domain.Usuario;

@Name("gestionJuezBD")
@Scope(ScopeType.SESSION)
public class ConsultaJuezAction {

    @Logger
    Log log;


	@In(create = true, required = false)
	private Usuario user;

    @In(create = true)
    private UsuarioDAO usuarioDAO;

    @In(create = true)
	private ConcursoDAO concursoDAO;

	@In(create = true)
	private DiccionarioDAO diccionariosDAO;

	@In(create = true)
	private PajarosDAO pajarosDAO;


	@In(create = true)
	private ProvinciaDAO provinciaDAO;

	private List<Provincia> listaProvincias;
	private List<Municipio> listaMunicipios;

	private Provincia provinciaSel;
	private Municipio municipioSel;

	private String nombreCriador;
	private String apellido1;
	private String apellido2;

	@DataModel("listaJueces")
	private List<Criador> listaJueces;
    @DataModelSelectionIndex("listaJueces")
    private int index;


    public void buscar() {
    	String where = " 1 = 1 ";
    	if(nombreCriador!= null && !nombreCriador.equals("")){
    		where = where + " and upper(j.nombre) like upper('"+nombreCriador+"') ";
    	}
    	if(apellido1!= null && !apellido1.equals("")){
    		where = where + " and upper(j.apellido1) like upper('"+apellido1+"') ";
    	}
    	if(apellido2!= null && !apellido2.equals("")){
    		where = where + " and upper(j.apellido2) like upper('"+apellido2+"') ";
    	}
    	if(provinciaSel != null){
    		where = where + " and j.provincia.provincia = " + provinciaSel.getProvincia();
    	}
    	if(municipioSel != null){
    		where = where + " and j.municipio.id= " + municipioSel.getId();
    	}

    	listaJueces = usuarioDAO.getListJueces(where);
    	if(listaJueces == null || listaJueces.size()==0){
            FacesMessages.instance().add("No hay jueces que coincidan con los criterios introducidos");
        }

    }


    public String traduce(String s){
        String res="";
        if(s.equals("true")){
            res="Si";
        }else{
            res="No";
        }
        return res;

    }


    @Begin(join = true, flushMode=FlushModeType.MANUAL)
    public String gestion() {
		provinciaSel = null;
		municipioSel = null;
		listaJueces = null;
		apellido1 = null;
		apellido2 = null;
		nombreCriador = null;
		return "true";
	}


    public List<Provincia> getListaProvincias() {
		if (listaProvincias == null) {
			listaProvincias = provinciaDAO.getProvincias();
		}
		return listaProvincias;
	}

	public void setListaProvincias(List<Provincia> listaProvincias) {
		this.listaProvincias = listaProvincias;
	}

	public List<Municipio> getListaMunicipios() {
		if (provinciaSel == null) {
			listaMunicipios = new ArrayList<Municipio>();
		} else {
			listaMunicipios = provinciaDAO.getMunicipios(""
					+ provinciaSel.getProvincia());
		}
		return listaMunicipios;
	}

	public void setListaMunicipios(List<Municipio> listaMunicipio) {
		this.listaMunicipios = listaMunicipio;
	}


	public Provincia getProvinciaSel() {
		return provinciaSel;
	}


	public void setProvinciaSel(Provincia provinciaSel) {
		this.provinciaSel = provinciaSel;
	}


	public Municipio getMunicipioSel() {
		return municipioSel;
	}


	public void setMunicipioSel(Municipio municipioSel) {
		this.municipioSel = municipioSel;
	}








	public List<Criador> getListaJueces() {
		return listaJueces;
	}


	public void setListaJueces(List<Criador> listaJueces) {
		this.listaJueces = listaJueces;
	}


	public int getIndex() {
		return index;
	}


	public void setIndex(int index) {
		this.index = index;
	}


	public String getNombreCriador() {
		return nombreCriador;
	}


	public void setNombreCriador(String nombreCriador) {
		this.nombreCriador = nombreCriador;
	}


	public String getApellido1() {
		return apellido1;
	}


	public void setApellido1(String apellido1) {
		this.apellido1 = apellido1;
	}


	public String getApellido2() {
		return apellido2;
	}


	public void setApellido2(String apellido2) {
		this.apellido2 = apellido2;
	}




}

